// pages/order/index.js
import { request } from "../../request/index.js";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 父向子传递的数据
    tabs: [
      {
        id: 0,
        value: "全部",
        isAlive: true
      },
      {
        id: 1,
        value: "待付款",
        isAlive: false
      },
      {
        id: 2,
        value: "待发货",
        isAlive: false
      },
      {
        id: 3,
        value: "退款/退货",
        isAlive: false
      }
    ],
    // 订单列表
    orderList: []
  },
  // 处理tabs标签点击切换事件, 接受子组件传递的数据
  handleItemChange (e) {
    const { index } = e.detail;
    this.changeTitleByIndex(index);
    // 重新发送请求 index = type -1
    this.getOrderList(index + 1);
  },

  // 根据标题索引来激活选中标题数组
  changeTitleByIndex (index) {
    let tabs = JSON.parse(JSON.stringify(this.data.tabs));
    tabs.forEach((v, i) => {
      i === index ? v.isAlive = true : v.isAlive = false;
    });
    this.setData({ tabs })
  },

  // 获取订单列表
  async getOrderList (type) {
    const res = await request({ url: "/my/orders/all", data: { type } });
    // console.log(res);
    // 保存数据, 并解析时间
    this.setData({
      orderList: res.orders.map(v => ({ ...v, create_time_cn: (new Date(v.create_time * 1000).toLocaleString()) }))
    })
  },

  onShow () {
    // 0. 判断缓存中有没有 token
    const token = wx.getStorageSync("token");
    if (!token) {
      // 跳转回验证
      wx.navigateTo({
        url: '/pages/auth/index'
      });
    }
    // onLoad中可以获取url携带的参数options, 而onShow是不可以接收的
    // 1. 获取当前的小程序的页面栈(相当于内存中的数组, 长度最大为10, 即跳转能返回的页面最大次数为10)
    let pages = getCurrentPages();
    // 2. 数组中索引(index)最大的页面就是当前页面
    let currentPage = pages[pages.length - 1];
    // console.log(currentPage.options);
    // 3. 获取type参数
    const { type } = currentPage.options;
    // 4. 根据type 来决定激活的tabs
    this.changeTitleByIndex(type - 1);
    this.getOrderList(type);
  }
})